// pages/search/search.js
const util = require('../../utils/util')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    searchHot: [],
    history: [],
    inputValue: '',
    searchResult: [],
    showResult: false,
    sortType: 'asc', // 顺序 升序， dasc 降序
    sortFiled: 'publishDate', // 排序类型 最新，minPrice价格
    page: 1
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    this._fetchSearchHot()
    let history = await util._getStorage('history')
    if(history !== undefined) {
      this.setData({
        history
      })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  // 输入事件函数
  handleInput(e) {
    this.setData({
      inputValue: e.detail.value
    })
  },

  // 提交事件函数
  handleConfirm(e) {
    this._fetchSearch()
  },

  // 点击热词
  handleHotSearch(e) {
    let value = e.target.id
    this.setData({
      inputValue: value
    })
    this._fetchSearch(value)
  },

  // 点击清除历史记录
  handleClearHistory(e) {
    util._removeStorage('history').then(() => {
      this.setData({
        history: []
      })
    })
  },

  // 滚动到底部
  handleScrollToBottom(e) {
    if(this.data.page < 0) {
      wx.showToast({
        title: '没有更多了！',
        icon: 'none'
      })
      return
    } 
    wx.showLoading({
      title: '加载中',
    })
    this._fetchSearch()
  },

  // 点击进行排序
  handleSelectSort(e) {
    let select = e.currentTarget.dataset.type
    let { sortType, sortFiled } = this.data
    if(sortFiled === select) {
      this.setData({
        sortType: sortType === 'asc' ? 'desc' : 'asc',
        page: 1
      })
    } else {
      this.setData({
        page: 1,
        sortType: 'asc',
        sortFiled: select
      })
    }
    this._fetchSearch()
  },

  // 请求热门搜索
  _fetchSearchHot() {
    wx.request({
      url: 'https://ms.viomi.com.cn/wares-web/services/prod/elastic/search/queryProdSearchHots.json?quantity=10',
      success: (res) => {
        this.setData({
          searchHot: res.data.mobBaseRes.result
        })
      }
    })
  },

  // 请求搜索结果
  _fetchSearch() {
    let { sortFiled, sortType, page, inputValue, searchResult } = this.data;
    let url = `https://ms.viomi.com.cn/vstore-api/wares/open-api/v1/prodElasticSearch/querySearch?platForm=1&queryStr=${inputValue}&sortType=${sortType}&sortFiled=${sortFiled}&currentPage=${page}&rowsPerPage=10`
    wx.request({
      url,
      success: (res) => {
        let data = res.data.mobBaseRes.result
        if(page !== 1) data = searchResult.concat(data) 
        if(data.length < page * 10) page = -10
        this.setData({
          showResult: true,
          page: page + 1,
          searchResult: data
        })
        wx.hideLoading()
      }
    })
    let history = this.data.history
    let arr = history.reduce((value, item) => {
      return value = item.name === inputValue ? value : [...value, item]
    }, [{name: inputValue, id: `00${history.length}`}])
    console.log(arr);
    util._setStorage('history', arr)
  }
})